﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TCC_Hotel.Entidades;
using TCC_Hotel.Serviços.BDServices;
using TCC_Hotel.Serviços;

namespace TCC_Hotel.Apresentacao.Hospedes
{
    public partial class DetalharHospede : System.Web.UI.Page
    {
        HospedeService servico = new HospedeService();
        string CPF = null;
        int tipoHospede;

        /// <summary>
        /// Carregamento da página
        /// </summary>
        protected void Page_Load(object sender, EventArgs e)
        {
            //Recupera o usuario corrente
            string usuario = Request.ServerVariables["AUTH_USER"].ToString();
            LoginService servico_Login = new LoginService();
            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Listar_Hospedes)
            {
                //Redireciona para a pagina inicial
                Response.Redirect("~/");
            }

            //Verifica permissao ao acesso da página
            if (!servico_Login.RecuperarPermissaoCache(usuario).Cadastrar_Hospedes)
            {
                //Redireciona para a pagina inicial
                btnEditar.Visible = false;
            }

            if (!IsPostBack)
            {               
               
                //Chama o serviço de empresas
                EmpresaService servicoEmpresa = new EmpresaService();
                ddlEmpresas.DataSource = servicoEmpresa.RecuperarEmpresas();
                ddlEmpresas.DataTextField = "Nome";
                ddlEmpresas.DataValueField = "CNPJ";
                ddlEmpresas.DataBind();

                //Se nao vier parametro, redireciona o usuario para a tela inicial
                if (Request.Params["cpf"] == null || Request.Params["tipoHospede"] == null)
                {
                    //Redireciona para a pagina inicial
                    Response.Redirect("~/");
                }

                //Recupera o parametro da URL
                CPF = Request.Params["cpf"];
                tipoHospede = Convert.ToInt32(Request.Params["tipoHospede"]);

                //hospede particular
                if (tipoHospede == 1)
                {
                    //chama o serviço que busca no banco de dados o funcionario correspondente
                    HospedeParticular hospede = servico.RecuperarDetalhesHospedeParticular(CPF);

                    //Monta o formulario para o usuario
                    if (hospede != null)
                    {
                        txtNome.Text = hospede.Nome;
                        txtNascimento.Text = Convert.ToString(hospede.Nascimento).Substring(0, 10);
                        txtTelefone1.Text = hospede.Contato.Telefone[0];                      
                        txtTelefone2.Text = hospede.Contato.Telefone[1];      
                        txtCelular2.Text = hospede.Contato.Celular[1];
                        txtCelular1.Text = hospede.Contato.Celular[0]; 
                        txtEmail.Text = hospede.Contato.Email;
                        txtLogradouro.Text = hospede.Endereco.Logradouro;
                        txtBairro.Text = hospede.Endereco.Bairro;
                        txtCEP.Text = hospede.Endereco.CEP;
                        txtNumero.Text = Convert.ToString(hospede.Endereco.Numero);
                        txtCidade.Text = hospede.Endereco.Cidade;
                        txtEstado.Text = hospede.Endereco.Estado.nome;
                        txtComplemento.Text = hospede.Endereco.Complemento;
                        txtCPF.Text = hospede.CPF;
                        txtRG.Text = hospede.RG;

                        
                    }
                }

               
                //hospede faturado 
                else if (tipoHospede == 2)
                {
                    ckbFaturado.Checked = true;
                    plnFaturado.Visible = true;

                    //chama o serviço que busca no banco de dados o funcionario correspondente
                    HospedeFaturado hospede = servico.RecuperarDetalhesHospedeFaturado(CPF);

                    //Monta o formulario para o usuario
                    if (hospede != null)
                    {
                        txtNome.Text = hospede.Nome;
                        txtNascimento.Text = Convert.ToString(hospede.Nascimento).Substring(0, 10);
                        txtTelefone1.Text = hospede.Contato.Telefone[0];
                        txtTelefone2.Text = hospede.Contato.Telefone[1];
                        txtCelular2.Text = hospede.Contato.Celular[1];
                        txtCelular1.Text = hospede.Contato.Celular[0];
                        txtEmail.Text = hospede.Contato.Email;
                        txtLogradouro.Text = hospede.Endereco.Logradouro;
                        txtBairro.Text = hospede.Endereco.Bairro;
                        txtCEP.Text = hospede.Endereco.CEP;
                        txtNumero.Text = Convert.ToString(hospede.Endereco.Numero);
                        txtCidade.Text = hospede.Endereco.Cidade;
                        txtEstado.Text = hospede.Endereco.Estado.nome;
                        txtComplemento.Text = hospede.Endereco.Complemento;
                        txtCPF.Text = hospede.CPF;
                        txtRG.Text = hospede.RG;
                        txtCargoEmpresa.Text = hospede.CargoEmpresa;
                        ddlEmpresas.SelectedValue = hospede.CNPJ;                      


                       
                    }

                }
            }
        }

        /// <summary>
        /// Evento de click do botao voltar 
        /// </summary>
        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            tipoHospede = Convert.ToInt32(Request.Params["tipoHospede"]);

            //Redireciona para a pagina anterior
            if (tipoHospede == 1)
            {
                Response.Redirect("~/Apresentacao/Hospedes/ListarHospedesParticulares.aspx");
            }
            else if (tipoHospede == 2)
            {
                Response.Redirect("~/Apresentacao/Hospedes/ListarHospedesFaturados.aspx");
            }
        }

        /// <summary>
        /// Evento de click do botao editar 
        /// </summary>
        protected void btnEditar_Click(object sender, EventArgs e)
        {
            //Redireciona para a pagina de editar correspondente com o CPF como parametro
            Response.Redirect("~/Apresentacao/Hospedes/EditarHospede.aspx?cpf=" + Request.Params["cpf"] + "&tipoHospede=" + Request.Params["tipoHospede"]);

        }
    }
}